package com.ruoyi.pos.service;

import com.ruoyi.pos.domain.PosMenu;

import java.util.List;

/**
 * POS菜单配置Service接口
 * 
 * @author Grand Pacific
 * @date 2024-01-01
 */
public interface IPosMenuService {
    
    /**
     * 查询POS菜单配置
     * 
     * @param menuId POS菜单配置主键
     * @return POS菜单配置
     */
    PosMenu selectPosMenuByMenuId(Long menuId);

    /**
     * 查询POS菜单配置列表
     * 
     * @param posMenu POS菜单配置
     * @return POS菜单配置集合
     */
    List<PosMenu> selectPosMenuList(PosMenu posMenu);

    /**
     * 新增POS菜单配置
     * 
     * @param posMenu POS菜单配置
     * @return 结果
     */
    int insertPosMenu(PosMenu posMenu);

    /**
     * 修改POS菜单配置
     * 
     * @param posMenu POS菜单配置
     * @return 结果
     */
    int updatePosMenu(PosMenu posMenu);

    /**
     * 批量删除POS菜单配置
     * 
     * @param menuIds 需要删除的POS菜单配置主键集合
     * @return 结果
     */
    int deletePosMenuByMenuIds(Long[] menuIds);

    /**
     * 删除POS菜单配置信息
     * 
     * @param menuId POS菜单配置主键
     * @return 结果
     */
    int deletePosMenuByMenuId(Long menuId);

    /**
     * 根据设备信息获取可用菜单列表
     * 
     * @param deviceCode 设备编码
     * @param deviceType 设备类型
     * @return 菜单列表
     */
    List<PosMenu> selectDeviceMenus(String deviceCode, String deviceType);

    /**
     * 构建菜单树形结构
     * 
     * @param menus 菜单列表
     * @return 菜单树
     */
    List<PosMenu> buildMenuTreeSelect(List<PosMenu> menus);

    /**
     * 根据父级菜单ID查询子菜单
     * 
     * @param parentId 父级菜单ID
     * @return 子菜单列表
     */
    List<PosMenu> selectMenusByParentId(Long parentId);

    /**
     * 更新菜单状态
     * 
     * @param posMenu 菜单信息
     * @return 结果
     */
    int updatePosMenuStatus(PosMenu posMenu);

    /**
     * 更新菜单排序
     * 
     * @param posMenu 菜单信息
     * @return 结果
     */
    int updatePosMenuOrder(PosMenu posMenu);
}
